package com.zyy;

import java.util.LinkedList;
import java.util.Queue;

/**
 * @author zyy
 * @date 2021/5/12 下午3:30
 * 队列模拟栈
 * * 思路:用两个队列 queue1 queue2
 * * push:往一个队列queue1中add
 * * pop:也在同一个队列queue1中remove最后一条数据，其他的要放在queue2中暂存，当queue1中没有数据把queue2的数据放回来
 */
public class Queue2Stack {
    Queue queue1 = new LinkedList();
    Queue queue2 = new LinkedList();

    public synchronized void push(Object o) {
        queue1.add(o);
    }

    public synchronized Object pop() {
        if (queue1.isEmpty() && queue2.isEmpty()) {
            return null;
        }

        if (queue1.isEmpty()) {
            while (!queue2.isEmpty()) {
                queue1.add(queue2.remove());
            }
        }

        while (queue1.size() > 1){
            queue2.add(queue1.remove());
        }

        return queue1.remove();
    }

}
